home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 February: Technology Seed / Mac Tech Seed Feb '97.toast / OpenDoc 1.2b2c1 / TestParts / Clock / ClockFrm.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-01-01  |  10.0 KB  |  295 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        ClockFrm.h
  3.  
  4.     Contains:    xxx put contents here xxx
  5.  
  6.     Owned by:    Richard Rodseth
  7.  
  8.     Copyright:    © 1995 by Apple Computer, Inc., all rights reserved.
  9.  
  10.     Change History (most recent first):
  11.  
  12.          <6>    10/18/95    RR        1289153: Recover from exceptions creating
  13.                                     windows. Store fPlatformWindow pointer in
  14.                                     ClockFrame, so we can get to it even if
  15.                                     odWindow isn't successfully created
  16.          <5>     9/12/95    RR        Various activation problems. Added a
  17.                                     floating window
  18.          <4>      9/1/95    RR        # 1244639 SetShouldDeleteWindow
  19.          <3>      7/7/95    RR        Some refactoring. Fix
  20.                                     CreatePropObjSpecifier to deal with
  21.                                     non-persistent frame. Set source frame of
  22.                                     dialogs.
  23.          <2>      6/3/95    TJ        Added #includes for compile with out PCH
  24.          <1>     5/31/95    RR        first checked in
  25.  
  26.     To Do:
  27. */
  28.  
  29. #ifndef _CLOCKFRM_
  30. #define _CLOCKFRM_
  31.  
  32. #ifndef SOM_ODSession_xh
  33. #include <ODSessn.xh>
  34. #endif
  35.  
  36. #ifndef SOM_ODShape_xh
  37. #include <Shape.xh>
  38. #endif
  39.  
  40. #ifndef SOM_ODArbitrator_xh
  41. #include <Arbitrat.xh>
  42. #endif
  43.  
  44. #ifndef SOM_ODDispatcher_xh
  45. #include <Disptch.xh>
  46. #endif
  47.  
  48. //=========================================================================
  49. // Classes Defined Here
  50. //=========================================================================
  51.  
  52. class ClockFrame;
  53.     class ClockTimeFrame;
  54.     class ClockDialogFrame;
  55.         class ClockSynchroDialogFrame;
  56.         class ClockAlarmSettingsDialogFrame;
  57.         class ClockDisplaySettingsDialogFrame;
  58.  
  59. //=========================================================================
  60. // Classes Used Here
  61. //=========================================================================
  62.  
  63. class ClockPart;
  64. class ODFocusSet; //$$$$$
  65.  
  66. //=========================================================================
  67. // Clock Frame
  68. //=========================================================================
  69.  
  70. class ClockFrame
  71. {
  72. public:
  73.     ClockFrame();
  74.     ~ClockFrame();
  75.     void InitClockFrame(Environment* ev, 
  76.                         ODSession* session,
  77.                         ODFrame* frame, 
  78.                         ClockPart* clockPart);
  79.     
  80.     virtual void Draw(Environment* ev, ODFacet* facet, ODShape* invalShape) {  };
  81.     virtual ODBoolean HandleMouseDown(Environment* ev, ODFacet* facet, ODEventData* event) { return kODFalse; };
  82.     virtual ODBoolean HandleMouseUp(Environment* ev, ODFacet* facet, ODEventData* event) { return kODFalse; };
  83.     virtual void ActivatingWindow(Environment* ev, ODFacet* facet, ODEventData* event);
  84.     virtual void DeactivatingWindow(Environment* ev, ODFacet* facet, ODEventData* event);
  85.     virtual void AcquiredRequestedFoci(Environment* ev) { };
  86.     virtual void MouseEnter(Environment* ev, ODFacet* facet, ODPoint* where);
  87.     virtual void MouseWithin(Environment* ev, ODFacet* facet, ODPoint* where);
  88.     virtual void MouseLeave(Environment* ev, ODFacet* facet);
  89.     virtual void Activate(Environment* ev);
  90.     virtual void AdjustMenus(Environment *ev);
  91.     virtual ODBoolean HandleMenuEvent(Environment* ev, ODEventData* event);
  92.     virtual void Idle(Environment* ev, ODEventData* event) { };
  93.     virtual void FacetAdded(Environment* ev, ODFacet* facet);
  94.     virtual ODID ViewInWindow(Environment *ev) { return 0; };
  95.  
  96.     virtual ODBoolean BeginRelinquishFocus(Environment *ev,
  97.                                                  ODTypeToken focus,
  98.                                                  ODFrame* proposedFrame);
  99.     virtual void CommitRelinquishFocus(Environment *ev,
  100.                                              ODTypeToken focus,
  101.                                              ODFrame* proposedFrame);
  102.     virtual void AbortRelinquishFocus(Environment *ev,
  103.                                              ODTypeToken    focus,
  104.                                              ODFrame* proposedFrame);
  105.     virtual void FocusAcquired(Environment *ev,
  106.                                      ODTypeToken    focus);
  107.     virtual void FocusLost(Environment *ev,
  108.                                  ODTypeToken    focus, ODFrame* proposedFrame);
  109.     virtual void AcquiredSelectionFocus(Environment* ev);
  110.     virtual void LostSelectionFocus(Environment* ev, ODFrame* proposedFrame);
  111.                                  
  112.     virtual void Add(Environment* ev);
  113.     virtual void Connect(Environment* ev);
  114.     virtual void Remove(Environment* ev);
  115.     virtual void Close(Environment* ev);
  116.     virtual void FrameShapeChanged(Environment* ev) {};
  117.  
  118.     void SetShouldDeleteWindow(ODBoolean shouldDelete) { fShouldDeleteWindow = shouldDelete; };
  119.     void SetPlatformWindow(ODPlatformWindow window) { fPlatformWindow = window; };
  120.     virtual void DisposePlatformWindow(Environment *ev);
  121.     virtual void SuspendFocus(Environment* ev);
  122.     virtual void ResumeFocus(Environment* ev);
  123.     virtual void SuspendProcess(Environment* ev);
  124.     virtual void ResumeProcess(Environment* ev);
  125.     void SetPart(Environment* ev, ClockPart* clockPart) { fClockPart = clockPart; };
  126.     virtual void Adjust(Environment* ev) {};
  127.  
  128.         
  129. protected:
  130.     ODSession*        fSession;
  131.     ODArbitrator*    fArbitrator;
  132.     ODDispatcher*    fDispatcher;
  133.     ODWindowState*    fWindowState;
  134.     ODTypeToken     fSelectionFocus;
  135.     ODTypeToken     fMenuFocus;
  136.     ODTypeToken        fKeyFocus;
  137.     ODTypeToken        fModalFocus;
  138.  
  139.     ODFrame*       fFrame;
  140.     ClockPart*     fClockPart;
  141.     Cursor        fArrowCursor;             // pointer cursor
  142.     ODFocusSet* fFocusSet;
  143.     ODBoolean    fHasFoci;            // Does this frame have its focus set?
  144.     ODBoolean    fNeedsFoci;    // should this be activated when its window is activated?
  145.     ODID         fWindowID;             // ID of View As Window window
  146.     ODPlatformWindow fPlatformWindow; // The platform window for this (root) frame
  147.     ODBoolean    fShouldDeleteWindow; // Delete platform window when closing/removing
  148.     ODBoolean    fShouldHideOnSuspend;
  149.     ODBoolean    fShowWindowOnResume;
  150.     ODBoolean    fShowWindowOnFocus;
  151.     ODBoolean    fInBackground;
  152. };
  153.  
  154. //=========================================================================
  155. // ClockTimeFrame
  156. //=========================================================================
  157.  
  158. class ClockTimeFrame : public ClockFrame
  159. {
  160. public:
  161.     ClockTimeFrame();
  162.     virtual ~ClockTimeFrame();
  163.     void InitClockTimeFrame(Environment* ev, 
  164.                             ODSession* session,
  165.                             ODFrame* frame, 
  166.                             ClockPart* clockPart);
  167.     
  168.     virtual void Draw(Environment* ev, ODFacet* facet, ODShape* invalShape);    
  169.     void DrawClockFace(Environment* ev, ODFacet* facet);
  170.     void DrawTime(Environment* ev,  ODFacet* facet, ODULong tickCount);
  171.     void UpdateTime(Environment* ev,  ODFacet* facet, ODULong tickCount);
  172.     
  173.     void DrawAnalogFace(Environment* ev,  ODFacet* facet);
  174.     void DrawDigitalTime(Environment* ev, ODFacet* facet, ODULong tickCount);
  175.     void DrawClockHands(Environment* ev,  ODFacet* facet, ODULong tickCount);
  176.     void UpdateClockHands(Environment* ev,  ODFacet* facet, ODULong tickCount);
  177.     void DrawHourHand(Rect* clockRect, Point* centerPoint, ODSShort radius, ODSShort hour, ODSShort minute);
  178.     void DrawMinuteHand(Rect* clockRect, Point* centerPoint, ODSShort radius, ODSShort minute);
  179.     void DrawSecondHand(Rect* clockRect, Point* centerPoint, ODSShort radius, ODSShort second);
  180.     
  181.     
  182.     
  183.         
  184.     virtual void Idle(Environment* ev, ODEventData* event);
  185.     virtual ODBoolean HandleMouseDown(Environment* ev, ODFacet* facet, ODEventData* event);
  186.     virtual ODBoolean HandleMouseUp(Environment* ev, ODFacet* facet, ODEventData* event);
  187.     virtual void MouseEnter(Environment* ev,  ODFacet* facet, ODPoint* where);
  188.     virtual void AcquiredRequestedFoci(Environment* ev);
  189.     virtual void AdjustFrameShape(Environment* ev);
  190.     virtual void FacetAdded(Environment* ev, ODFacet* facet);
  191.     virtual void AdjustMenus(Environment *ev);
  192.     virtual ODBoolean HandleMenuEvent(Environment* ev, ODEventData* event);
  193.     virtual ODID ViewInWindow(Environment *ev);
  194.     virtual void Add(Environment* ev);
  195.     virtual void Connect(Environment* ev);
  196.     virtual void Remove(Environment* ev);
  197.     virtual void Close(Environment* ev);
  198.     virtual void FrameShapeChanged(Environment* ev);
  199.     virtual void FitToFrameShape(Environment* ev);
  200.     virtual void Adjust(Environment* ev);
  201.  
  202. private:
  203.     Cursor                 fCrossCursor;             // cross cursor
  204.     ODSLong             fLastTime;                 // tick count last time we drew time
  205. };
  206.  
  207. //=========================================================================
  208. // ClockDialogFrame
  209. //=========================================================================
  210.  
  211. class ClockDialogFrame : public ClockFrame
  212. {
  213. public:
  214.     ClockDialogFrame();
  215.     virtual ~ClockDialogFrame();
  216.     void InitClockDialogFrame(Environment* ev, 
  217.                                 ODSession* session,
  218.                                 ODFrame* frame, 
  219.                                 ClockPart* clockPart);
  220.     
  221.     virtual void Draw(Environment* ev, ODFacet* facet, ODShape* invalShape);
  222.     virtual void Idle(Environment* ev, ODEventData* event);
  223.  
  224.     virtual void Add(Environment* ev);
  225.     virtual void Connect(Environment* ev);
  226.     virtual void Remove(Environment* ev);
  227.     virtual void Close(Environment* ev);
  228.     
  229. private:
  230. };
  231.  
  232. //=========================================================================
  233. // ClockSynchroDialogFrame
  234. //=========================================================================
  235.  
  236. class ClockSynchroDialogFrame : public ClockDialogFrame
  237. {
  238. public:
  239.     ClockSynchroDialogFrame();
  240.     virtual ~ClockSynchroDialogFrame();
  241.     void InitClockSynchroDialogFrame(Environment* ev, 
  242.                                         ODSession* session,
  243.                                         ODFrame* frame, 
  244.                                         ClockPart* clockPart);
  245.  
  246.     virtual ODBoolean HandleMouseDown(Environment* ev, ODFacet* facet, ODEventData* event);
  247.     virtual void AdjustMenus(Environment *ev);
  248.         
  249. private:
  250. };
  251.  
  252. //=========================================================================
  253. // ClockAlarmSettingsDialogFrame
  254. //=========================================================================
  255.  
  256. class ClockAlarmSettingsDialogFrame : public ClockDialogFrame
  257. {
  258. public:
  259.     ClockAlarmSettingsDialogFrame();
  260.     virtual ~ClockAlarmSettingsDialogFrame();
  261.     void InitClockAlarmSettingsDialogFrame(Environment* ev, 
  262.                                         ODSession* session,
  263.                                         ODFrame* frame, 
  264.                                         ClockPart* clockPart);
  265.  
  266.     virtual ODBoolean HandleMouseDown(Environment* ev, ODFacet* facet, ODEventData* event);
  267.     
  268.     
  269. private:
  270. };
  271.  
  272. //=========================================================================
  273. // ClockDisplaySettingsDialogFrame
  274. //=========================================================================
  275.  
  276. class ClockDisplaySettingsDialogFrame : public ClockDialogFrame
  277. {
  278. public:
  279.     ClockDisplaySettingsDialogFrame();
  280.     virtual ~ClockDisplaySettingsDialogFrame();
  281.     void InitClockDisplaySettingsDialogFrame(Environment* ev, 
  282.                                         ODSession* session,
  283.                                         ODFrame* frame, 
  284.                                         ClockPart* clockPart);
  285.  
  286.     virtual ODBoolean HandleMouseDown(Environment* ev, ODFacet* facet, ODEventData* event);
  287.     virtual void Add(Environment* ev);
  288.     virtual void Adjust(Environment* ev);
  289.     
  290.     
  291. private:
  292. };
  293.  
  294. #endif // _CLOCKFRM_
  295.